IISで実行していたASP.NET Web FormsアプリケーションをApp Service(Windows Container)環境へ移行する
いわさです。
私はプライベートでKenticoをたまに触るのですが、Kenticoはバージョンや構成によっては ASP.NET Web Formsで構築されている場合があります。
どうにかしてクラウドネイティブに近づけていきたいものです。どうせなら。
各クラウドベンダーには色々な移行オプションが用意されていますが、本日はVisual Studioの基本的なDockerサポート機能とAzureデプロイ機能を使い、コンテナ化とACRへのデプロイを試してみました。
ビルドマシンはWindows10 or Server 2019 で Windows Container が動作する環境を前提にしています。
Dockerサポートの追加
ASP.NET Web Formsで作成された古いWebアプリケーションがターゲットである想定です。
Visual Studio 2019 でソリューションを開きます。
ソリューションエクスプローラーでプロジェクトを右クリックし、追加
->Dockerサポート
を選択します。
すると、Dockerファイルが追加されます。
#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed. #For more information, please see https://aka.ms/containercompat FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019 ARG source WORKDIR /inetpub/wwwroot COPY ${source:-obj/Docker/publish} .
この時点でプロジェクトの実行オプションにDocker
が追加されていると思います。
試しに実行してみるとコンテナのビルドから実行まで行われ、ローカルでコンテナ環境が実行されます。
複雑な構成を行っていなければ一旦これで最低限のコンテナ化は完了です。
Azure Container Registry(ACR) へプッシュ
Visual Studioの公開機能でACRへプッシュすることが可能です。
ACRリソースが存在していなければ作成も可能です。
Pushが完了したら、AzureポータルにアクセスしACRを確認してみましょう。
イメージが登録されていると思います。
このままだと実はApp Service作成時にエラーになります。
Azureポータルからリソースを作成する場合はレジストリーのAdminユーザーを有効化する必要があります。
ACR管理画面のアクセスキー設定
から有効化しておきましょう。
App Serviceを作成します。
先程プッシュされたACRのコンテナイメージを指定して作成します。
注意点としては以下のオプションを指定することくらいでしょうか。
- 公開:Dockerコンテナー
- オペレーティング・システム:Windows
デプロイされたら、参照から表示してみましょう。
最初、表示まで数分時間がかかると思います。
無事App Service (Windows Container) へのサイト移行が完了しました。
まとめ
汎用的な操作でGUIベースで簡単な内容だと思いますので、手元に古のASP.NET Web Formsのアプリを持っている方は是非試してみてください。
簡単な検証が出来たので近々、Kenticoで試してみたいと思います。